/**
 * fs 是内置模块，用于与文件系统交互，可以进行写、读、删、追加、重命名等操作
 * fs 模块还提供了 同步 和 异步的 API，可以用来处理文件和目录。
 *
 *  写
 *      异步：fs.writeFile('位置.txt', '内容','utf8' (err)=>{ ... });
 *      同步：fs.writeFileSync('位置.txt','内容','utf8');
 *  读
 *      异步：fs.readFile('')
 *      同步：fs.readFileSync('')
 *  追加
 *      异步：fs.appendFile('')
 *      同步：fs.appendFileSync('')
 *  删
 *      异步：fs.unlink('')
 *      同步：fs.unlinkSync('')
 *  04-重命名
 *      异步：fs.rename('')
 *      同步：fs.renameSync('')
 *
 *  检查文件或目录是否存在
 *    •	fs.existsSync(path)：同步检查文件或目录是否存在。
 *    •	fs.access(path, mode, callback)：异步检查文件或目录的访问权限。
 *    •	fs.accessSync(path, mode)：同步检查文件或目录的访问权限。
 *
 *  创建目录
 *    •	fs.mkdir(path, options, callback)：异步创建目录。
 *    •	fs.mkdirSync(path, options)：同步创建目录。
 *
 *   删除目录
 *    •	fs.rmdir(path, callback)：异步删除目录。
 *    •	fs.rmdirSync(path)：同步删除目录。
 *   读取目录内容
 *    •	fs.readdir(path, callback)：异步读取目录内容。
 *    •	fs.readdirSync(path)：同步读取目录内容。
 *    文件状态信息
 *    •	fs.stat(path, callback)：异步获取文件或目录的状态信息。
 *    •	fs.statSync(path)：同步获取文件或目录的状态信息。
 */

// 导入 fs 模块
const fs = require('fs');

/**
 * 文件状态
 */
// // 异步
// fs.stat('./sss', (err, stats) => {
//     if (err) {
//         console.error('Error:', err);
//     } else {
//         console.log(stats.isDirectory()); // true: 如果路径是目录
//         console.log(stats.isFile()); // true: 如果路径是文件
//     }
// });
// 同步

// try {
//     const dir = fs.statSync('./新目录');
//     console.log(dir.isDirectory()); // true: 如果路径是目录
//     console.log(dir.isFile()); // false: 如果路径是文件
// }catch (err) {
//     console.error('Error:', err);
// }


/**
 * 读取目录
 */
// 异步
// fs.readdir('./新目录', (err, data) => {
//     if (err) throw err;
//     console.log(data);
// })
// // 同步
// const dir =  fs.readdirSync('../');
// console.log(dir);
/**
 * 删除目录
 */
// 异步删除
// fs.rm('./新目录',{recursive:true},(err) => {
//     if (err) throw err;
//     console.log('删除成功!');
// })
//
// // 同步删除
// fs.rmSync('./新目录',{recursive:true});


/**
 * 创建目录
 */
// 异步创建目录
// fs.mkdir('./新目录/a/b',{recursive:true},(err)=>{
//     if (err) throw err;
//     console.log('创建成功!');
// })
// // 同步创建目录
// fs.mkdirSync('./新目录/c/s',{recursive:true});
/**
 * 检查文件
 */
// 异步检查
// fs.access('./fileName.txt', fs.constants.F_OK, (err) => {
//     if (err) {
//         console.log('文件或目录不存在!');
//     } else {
//         console.log('文件或目录存在!');
//     }
// });
// // 同步检查01
// try {
//     fs.accessSync('./fileName.txt')
//     console.log('文件或目录存在!');
// } catch (err) {
//     console.log('文件或目录不存在!');
// }
// // 同步检查02
// if(fs.existsSync('./fileName.txt')){
//     console.log('文件或目录存在!');
// }else {
//     console.log('文件或目录不存在!');
// }
/**
 * 04-重命名
 */
// 异步重命名
// fs.rename('./fileName.txt', './fileNameNEW.txt',(err)=>{
//     if(err){ console.log(err); return; }
//     console.log('重命名成功!');
// })
// 同步重命名
// fs.renameSync('./fileNameNEW.txt','./fileName.txt');
/**
 * 删除
 */
// 异步删
// fs.unlink('./fileName.txt',(err) => {
//     if(err){ console.log(err); return}
//     console.log('文件删除成功!');
// })
// 同步删
// fs.unlinkSync('./fileName.txt');


/**
 * 追加
 */
// 异步追加
// fs.appendFile('./fileName.txt','\nhello java!','utf8',(err)=>{
//     if(err){ console.log(err); return; }
//     console.log('追加成功！');
// })
// 同步追加
// fs.appendFileSync('./fileName.txt','\nHello Python!','utf8');

/**
 * 读文件
 */
// 异步读
// fs.readFile('./fileName.txt', 'utf8', (err,data) => {
//     if (err) { console.log(err); return; }
//     console.log(data);
// })
// 同步读
// const data = fs.readFileSync('./fileName.txt', 'utf8');
// console.log(data);

/**
 * 写文件
 */
// 异步写
// fs.writeFile('./fileName.txt','hello world',(err,data)=>{
//     if(err){ console.log(err); return; }
//     console.log('文件写入成功!');
// })
// 同步写
// fs.writeFileSync('./fileName.txt','hello world!!');













